// 发布--订阅模式 先把需要订阅的内容保存到队列，当发布时让数组中的函数一次执行即可
const fs = require('fs')
let school = {}
let Dep = {
  arr: [],
  on(fn) {
    this.arr.push(fn)
  },
  emit() {
    if(Object.keys(school).length === 2) {
      this.arr.forEach(fn => {
        fn()
      });
    }
  }
}

// 观察者模式  发布订阅  区别 vue--观察者


Dep.on(function() {
  console.log(school)
})
Dep.on(function() {
  console.log('执行完啦')
})

fs.readFile('./2.age.txt', 'utf8', function(err, data) {
  school.age = data
  Dep.emit()
})
fs.readFile('./2.name.txt', 'utf8', function(err, data) {
  school.name = data
  Dep.emit()
})

